﻿#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main()
{
	/*
		测试
	*/
	/*
		使用二级指针模拟数组，每行的长度不相等
	*/
	int x = 0;

	//此处int** 和int*类型都是8字节，所以此处乘4就是获取了32个字节。
	//也就是四行
	int** p = (int**)malloc(sizeof(int*) * 4);
	for (int i = 0; i < 4; i++)
	{
		scanf("%d", &x);
		//次数是给一级指针p[i]赋值，**p可以理解为一个数组指针，数组内存放了四个指针，此处就是给数组内已经申请好的空地址赋值，赋值内容为指针。
		//此处数组内的指针位置是不连续的。
		p[i] = (int*)malloc(sizeof(int) * x);
		p[i][x] = '\0';		//在最后一位赋值为\0即可
	}

	//遍历、赋值动态地址
	for (int j = 0; j < 4; j++)
	{
		for (int i = 0; p[j][i] != '\0'; i++)
		{
			p[j][i] = i;
			printf("%d\n", p[j][i]);
		}
	}


	free(p);
}